home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / FileTransfers.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  19.0 KB  |  546 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        FileTransfers.h
  3.  
  4.      Contains:    CommToolbox File Transfer Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1988-1999 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __FILETRANSFERS__
  18. #define __FILETRANSFERS__
  19.  
  20. #ifndef __CONDITIONALMACROS__
  21.     #include <ConditionalMacros.h>
  22. #endif
  23.  
  24. #ifndef __STANDARDFILE__
  25.     #include <StandardFile.h>
  26. #endif
  27.  
  28. #ifndef __CTBUTILITIES__
  29.     #include <CTBUtilities.h>
  30. #endif
  31.  
  32. #ifndef __CONNECTIONS__
  33.     #include <Connections.h>
  34. #endif
  35.  
  36. #ifndef __FILES__
  37.     #include <Files.h>
  38. #endif
  39.  
  40. #ifndef __TERMINALS__
  41.     #include <Terminals.h>
  42. #endif
  43.  
  44.  
  45.  
  46.  
  47. #if PRAGMA_ONCE
  48. #pragma once
  49. #endif
  50.  
  51. #ifdef __cplusplus
  52. extern "C" {
  53. #endif
  54.  
  55. #if PRAGMA_IMPORT
  56. #pragma import on
  57. #endif
  58.  
  59. #if PRAGMA_STRUCT_ALIGN
  60.     #pragma options align=mac68k
  61. #elif PRAGMA_STRUCT_PACKPUSH
  62.     #pragma pack(push, 2)
  63. #elif PRAGMA_STRUCT_PACK
  64.     #pragma pack(2)
  65. #endif
  66.  
  67. #if CALL_NOT_IN_CARBON
  68. enum {
  69.     curFTVersion                = 2                                /* current file transfer manager version*/
  70. };
  71.  
  72. enum {
  73.                                                                 /* FTErr    */
  74.     ftGenericError                = -1,
  75.     ftNoErr                        = 0,
  76.     ftRejected                    = 1,
  77.     ftFailed                    = 2,
  78.     ftTimeOut                    = 3,
  79.     ftTooManyRetry                = 4,
  80.     ftNotEnoughDSpace            = 5,
  81.     ftRemoteCancel                = 6,
  82.     ftWrongFormat                = 7,
  83.     ftNoTools                    = 8,
  84.     ftUserCancel                = 9,
  85.     ftNotSupported                = 10
  86. };
  87.  
  88. typedef OSErr                             FTErr;
  89. enum {
  90.     ftIsFTMode                    = 1 << 0,
  91.     ftNoMenus                    = 1 << 1,
  92.     ftQuiet                        = 1 << 2,
  93.     ftConfigChanged                = 1 << 4,
  94.     ftSucc                        = 1 << 7
  95. };
  96.  
  97. typedef unsigned long                     FTFlags;
  98. enum {
  99.     ftSameCircuit                = 1 << 0,
  100.     ftSendDisable                = 1 << 1,
  101.     ftReceiveDisable            = 1 << 2,
  102.     ftTextOnly                    = 1 << 3,
  103.     ftNoStdFile                    = 1 << 4,
  104.     ftMultipleFileSend            = 1 << 5
  105. };
  106.  
  107. typedef unsigned short                     FTAttributes;
  108. enum {
  109.     ftReceiving                    = 0,
  110.     ftTransmitting                = 1,
  111.     ftFullDuplex                = 2                                /* (16) added ftFullDuplex bit.*/
  112. };
  113.  
  114. typedef unsigned short                     FTDirection;
  115. typedef CALLBACK_API( long , FileTransferDefProcPtr )(TermHandle hTerm, short msg, long p1, long p2, long p3);
  116. /*    application routines type definitions */
  117. typedef struct FTRecord                 FTRecord;
  118. typedef FTRecord *                        FTPtr;
  119. typedef FTPtr *                            FTHandle;
  120. typedef CALLBACK_API( OSErr , FileTransferReadProcPtr )(unsigned long *count, Ptr pData, long refCon, short fileMsg);
  121. typedef CALLBACK_API( OSErr , FileTransferWriteProcPtr )(unsigned long *count, Ptr pData, long refCon, short fileMsg);
  122. typedef CALLBACK_API( Size , FileTransferSendProcPtr )(Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags flag);
  123. typedef CALLBACK_API( Size , FileTransferReceiveProcPtr )(Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags *flag);
  124. typedef CALLBACK_API( OSErr , FileTransferEnvironsProcPtr )(long refCon, ConnEnvironRec *theEnvirons);
  125. typedef CALLBACK_API( void , FileTransferNotificationProcPtr )(FTHandle hFT, const FSSpec *pFSSpec);
  126. typedef CALLBACK_API( void , FileTransferChooseIdleProcPtr )(void );
  127. typedef STACK_UPP_TYPE(FileTransferDefProcPtr)                     FileTransferDefUPP;
  128. typedef STACK_UPP_TYPE(FileTransferReadProcPtr)                 FileTransferReadUPP;
  129. typedef STACK_UPP_TYPE(FileTransferWriteProcPtr)                 FileTransferWriteUPP;
  130. typedef STACK_UPP_TYPE(FileTransferSendProcPtr)                 FileTransferSendUPP;
  131. typedef STACK_UPP_TYPE(FileTransferReceiveProcPtr)                 FileTransferReceiveUPP;
  132. typedef STACK_UPP_TYPE(FileTransferEnvironsProcPtr)             FileTransferEnvironsUPP;
  133. typedef STACK_UPP_TYPE(FileTransferNotificationProcPtr)         FileTransferNotificationUPP;
  134. typedef STACK_UPP_TYPE(FileTransferChooseIdleProcPtr)             FileTransferChooseIdleUPP;
  135.  
  136. struct FTRecord {
  137.     short                             procID;
  138.     FTFlags                         flags;
  139.     FTErr                             errCode;
  140.     long                             refCon;
  141.     long                             userData;
  142.     FileTransferDefUPP                 defProc;
  143.     Ptr                             config;
  144.     Ptr                             oldConfig;
  145.     FileTransferEnvironsUPP         environsProc;
  146.     long                             reserved1;
  147.     long                             reserved2;
  148.     Ptr                             ftPrivate;
  149.     FileTransferSendUPP             sendProc;
  150.     FileTransferReceiveUPP             recvProc;
  151.     FileTransferWriteUPP             writeProc;
  152.     FileTransferReadUPP             readProc;
  153.     WindowPtr                         owner;
  154.     FTDirection                     direction;
  155.     SFReply                         theReply;
  156.     long                             writePtr;
  157.     long                             readPtr;
  158.     Ptr                             theBuf;
  159.     long                             bufSize;
  160.     Str255                             autoRec;
  161.     FTAttributes                     attributes;
  162. };
  163.  
  164. typedef unsigned short                     FTCompletionKind;
  165. enum {
  166.                                                                 /* FTReadProc messages */
  167.     ftReadOpenFile                = 0,                            /* count = forkFlags, buffer = pblock from PBGetFInfo */
  168.     ftReadDataFork                = 1,
  169.     ftReadRsrcFork                = 2,
  170.     ftReadAbort                    = 3,
  171.     ftReadComplete                = 4,
  172.     ftReadSetFPos                = 6,                            /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  173.     ftReadGetFPos                = 7                                /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  174. };
  175.  
  176. enum {
  177.                                                                 /* FTWriteProc messages */
  178.     ftWriteOpenFile                = 0,                            /* count = forkFlags, buffer = pblock from PBGetFInfo */
  179.     ftWriteDataFork                = 1,
  180.     ftWriteRsrcFork                = 2,
  181.     ftWriteAbort                = 3,
  182.     ftWriteComplete                = 4,
  183.     ftWriteFileInfo                = 5,
  184.     ftWriteSetFPos                = 6,                            /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  185.     ftWriteGetFPos                = 7                                /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  186. };
  187.  
  188. enum {
  189.                                                                 /*    fork flags */
  190.     ftOpenDataFork                = 1,
  191.     ftOpenRsrcFork                = 2
  192. };
  193.  
  194. #if OPAQUE_UPP_TYPES
  195.     EXTERN_API(FileTransferDefUPP)
  196.     NewFileTransferDefUPP           (FileTransferDefProcPtr    userRoutine);
  197.  
  198.     EXTERN_API(FileTransferReadUPP)
  199.     NewFileTransferReadUPP           (FileTransferReadProcPtr    userRoutine);
  200.  
  201.     EXTERN_API(FileTransferWriteUPP)
  202.     NewFileTransferWriteUPP           (FileTransferWriteProcPtr userRoutine);
  203.  
  204.     EXTERN_API(FileTransferSendUPP)
  205.     NewFileTransferSendUPP           (FileTransferSendProcPtr    userRoutine);
  206.  
  207.     EXTERN_API(FileTransferReceiveUPP)
  208.     NewFileTransferReceiveUPP       (FileTransferReceiveProcPtr userRoutine);
  209.  
  210.     EXTERN_API(FileTransferEnvironsUPP)
  211.     NewFileTransferEnvironsUPP       (FileTransferEnvironsProcPtr userRoutine);
  212.  
  213.     EXTERN_API(FileTransferNotificationUPP)
  214.     NewFileTransferNotificationUPP    (FileTransferNotificationProcPtr userRoutine);
  215.  
  216.     EXTERN_API(FileTransferChooseIdleUPP)
  217.     NewFileTransferChooseIdleUPP    (FileTransferChooseIdleProcPtr userRoutine);
  218.  
  219.     EXTERN_API(void)
  220.     DisposeFileTransferDefUPP       (FileTransferDefUPP        userUPP);
  221.  
  222.     EXTERN_API(void)
  223.     DisposeFileTransferReadUPP       (FileTransferReadUPP        userUPP);
  224.  
  225.     EXTERN_API(void)
  226.     DisposeFileTransferWriteUPP       (FileTransferWriteUPP    userUPP);
  227.  
  228.     EXTERN_API(void)
  229.     DisposeFileTransferSendUPP       (FileTransferSendUPP        userUPP);
  230.  
  231.     EXTERN_API(void)
  232.     DisposeFileTransferReceiveUPP    (FileTransferReceiveUPP userUPP);
  233.  
  234.     EXTERN_API(void)
  235.     DisposeFileTransferEnvironsUPP    (FileTransferEnvironsUPP userUPP);
  236.  
  237.     EXTERN_API(void)
  238.     DisposeFileTransferNotificationUPP    (FileTransferNotificationUPP userUPP);
  239.  
  240.     EXTERN_API(void)
  241.     DisposeFileTransferChooseIdleUPP    (FileTransferChooseIdleUPP userUPP);
  242.  
  243.     EXTERN_API(long)
  244.     InvokeFileTransferDefUPP       (TermHandle                hTerm,
  245.                                     short                    msg,
  246.                                     long                    p1,
  247.                                     long                    p2,
  248.                                     long                    p3,
  249.                                     FileTransferDefUPP        userUPP);
  250.  
  251.     EXTERN_API(OSErr)
  252.     InvokeFileTransferReadUPP       (unsigned long *            count,
  253.                                     Ptr                        pData,
  254.                                     long                    refCon,
  255.                                     short                    fileMsg,
  256.                                     FileTransferReadUPP        userUPP);
  257.  
  258.     EXTERN_API(OSErr)
  259.     InvokeFileTransferWriteUPP       (unsigned long *            count,
  260.                                     Ptr                        pData,
  261.                                     long                    refCon,
  262.                                     short                    fileMsg,
  263.                                     FileTransferWriteUPP    userUPP);
  264.  
  265.     EXTERN_API(Size)
  266.     InvokeFileTransferSendUPP       (Ptr                        thePtr,
  267.                                     long                    theSize,
  268.                                     long                    refCon,
  269.                                     CMChannel                channel,
  270.                                     CMFlags                    flag,
  271.                                     FileTransferSendUPP        userUPP);
  272.  
  273.     EXTERN_API(Size)
  274.     InvokeFileTransferReceiveUPP    (Ptr                    thePtr,
  275.                                     long                    theSize,
  276.                                     long                    refCon,
  277.                                     CMChannel                channel,
  278.                                     CMFlags *                flag,
  279.                                     FileTransferReceiveUPP    userUPP);
  280.  
  281.     EXTERN_API(OSErr)
  282.     InvokeFileTransferEnvironsUPP    (long                    refCon,
  283.                                     ConnEnvironRec *        theEnvirons,
  284.                                     FileTransferEnvironsUPP    userUPP);
  285.  
  286.     EXTERN_API(void)
  287.     InvokeFileTransferNotificationUPP    (FTHandle            hFT,
  288.                                     const FSSpec *            pFSSpec,
  289.                                     FileTransferNotificationUPP userUPP);
  290.  
  291.     EXTERN_API(void)
  292.     InvokeFileTransferChooseIdleUPP    (FileTransferChooseIdleUPP userUPP);
  293.  
  294. #else
  295.     enum { uppFileTransferDefProcInfo = 0x0000FEF0 };                 /* pascal 4_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
  296.     enum { uppFileTransferReadProcInfo = 0x00002FE0 };                 /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  297.     enum { uppFileTransferWriteProcInfo = 0x00002FE0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  298.     enum { uppFileTransferSendProcInfo = 0x0000AFF0 };                 /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 2_bytes) */
  299.     enum { uppFileTransferReceiveProcInfo = 0x0000EFF0 };             /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes) */
  300.     enum { uppFileTransferEnvironsProcInfo = 0x000003E0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes) */
  301.     enum { uppFileTransferNotificationProcInfo = 0x000003C0 };         /* pascal no_return_value Func(4_bytes, 4_bytes) */
  302.     enum { uppFileTransferChooseIdleProcInfo = 0x00000000 };         /* pascal no_return_value Func() */
  303.     #define NewFileTransferDefUPP(userRoutine)                         (FileTransferDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferDefProcInfo, GetCurrentArchitecture())
  304.     #define NewFileTransferReadUPP(userRoutine)                     (FileTransferReadUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferReadProcInfo, GetCurrentArchitecture())
  305.     #define NewFileTransferWriteUPP(userRoutine)                     (FileTransferWriteUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferWriteProcInfo, GetCurrentArchitecture())
  306.     #define NewFileTransferSendUPP(userRoutine)                     (FileTransferSendUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferSendProcInfo, GetCurrentArchitecture())
  307.     #define NewFileTransferReceiveUPP(userRoutine)                     (FileTransferReceiveUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferReceiveProcInfo, GetCurrentArchitecture())
  308.     #define NewFileTransferEnvironsUPP(userRoutine)                 (FileTransferEnvironsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferEnvironsProcInfo, GetCurrentArchitecture())
  309.     #define NewFileTransferNotificationUPP(userRoutine)             (FileTransferNotificationUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferNotificationProcInfo, GetCurrentArchitecture())
  310.     #define NewFileTransferChooseIdleUPP(userRoutine)                 (FileTransferChooseIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferChooseIdleProcInfo, GetCurrentArchitecture())
  311.     #define DisposeFileTransferDefUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
  312.     #define DisposeFileTransferReadUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  313.     #define DisposeFileTransferWriteUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  314.     #define DisposeFileTransferSendUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  315.     #define DisposeFileTransferReceiveUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  316.     #define DisposeFileTransferEnvironsUPP(userUPP)                 DisposeRoutineDescriptor(userUPP)
  317.     #define DisposeFileTransferNotificationUPP(userUPP)             DisposeRoutineDescriptor(userUPP)
  318.     #define DisposeFileTransferChooseIdleUPP(userUPP)                 DisposeRoutineDescriptor(userUPP)
  319.     #define InvokeFileTransferDefUPP(hTerm, msg, p1, p2, p3, userUPP)  (long)CALL_FIVE_PARAMETER_UPP((userUPP), uppFileTransferDefProcInfo, (hTerm), (msg), (p1), (p2), (p3))
  320.     #define InvokeFileTransferReadUPP(count, pData, refCon, fileMsg, userUPP)  (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppFileTransferReadProcInfo, (count), (pData), (refCon), (fileMsg))
  321.     #define InvokeFileTransferWriteUPP(count, pData, refCon, fileMsg, userUPP)  (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppFileTransferWriteProcInfo, (count), (pData), (refCon), (fileMsg))
  322.     #define InvokeFileTransferSendUPP(thePtr, theSize, refCon, channel, flag, userUPP)  (Size)CALL_FIVE_PARAMETER_UPP((userUPP), uppFileTransferSendProcInfo, (thePtr), (theSize), (refCon), (channel), (flag))
  323.     #define InvokeFileTransferReceiveUPP(thePtr, theSize, refCon, channel, flag, userUPP)  (Size)CALL_FIVE_PARAMETER_UPP((userUPP), uppFileTransferReceiveProcInfo, (thePtr), (theSize), (refCon), (channel), (flag))
  324.     #define InvokeFileTransferEnvironsUPP(refCon, theEnvirons, userUPP)  (OSErr)CALL_TWO_PARAMETER_UPP((userUPP), uppFileTransferEnvironsProcInfo, (refCon), (theEnvirons))
  325.     #define InvokeFileTransferNotificationUPP(hFT, pFSSpec, userUPP)  CALL_TWO_PARAMETER_UPP((userUPP), uppFileTransferNotificationProcInfo, (hFT), (pFSSpec))
  326.     #define InvokeFileTransferChooseIdleUPP(userUPP)                 CALL_ZERO_PARAMETER_UPP((userUPP), uppFileTransferChooseIdleProcInfo)
  327. #endif
  328. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  329. #define NewFileTransferDefProc(userRoutine)                     NewFileTransferDefUPP(userRoutine)
  330. #define NewFileTransferReadProc(userRoutine)                     NewFileTransferReadUPP(userRoutine)
  331. #define NewFileTransferWriteProc(userRoutine)                     NewFileTransferWriteUPP(userRoutine)
  332. #define NewFileTransferSendProc(userRoutine)                     NewFileTransferSendUPP(userRoutine)
  333. #define NewFileTransferReceiveProc(userRoutine)                 NewFileTransferReceiveUPP(userRoutine)
  334. #define NewFileTransferEnvironsProc(userRoutine)                 NewFileTransferEnvironsUPP(userRoutine)
  335. #define NewFileTransferNotificationProc(userRoutine)             NewFileTransferNotificationUPP(userRoutine)
  336. #define NewFileTransferChooseIdleProc(userRoutine)                 NewFileTransferChooseIdleUPP(userRoutine)
  337. #define CallFileTransferDefProc(userRoutine, hTerm, msg, p1, p2, p3) InvokeFileTransferDefUPP(hTerm, msg, p1, p2, p3, userRoutine)
  338. #define CallFileTransferReadProc(userRoutine, count, pData, refCon, fileMsg) InvokeFileTransferReadUPP(count, pData, refCon, fileMsg, userRoutine)
  339. #define CallFileTransferWriteProc(userRoutine, count, pData, refCon, fileMsg) InvokeFileTransferWriteUPP(count, pData, refCon, fileMsg, userRoutine)
  340. #define CallFileTransferSendProc(userRoutine, thePtr, theSize, refCon, channel, flag) InvokeFileTransferSendUPP(thePtr, theSize, refCon, channel, flag, userRoutine)
  341. #define CallFileTransferReceiveProc(userRoutine, thePtr, theSize, refCon, channel, flag) InvokeFileTransferReceiveUPP(thePtr, theSize, refCon, channel, flag, userRoutine)
  342. #define CallFileTransferEnvironsProc(userRoutine, refCon, theEnvirons) InvokeFileTransferEnvironsUPP(refCon, theEnvirons, userRoutine)
  343. #define CallFileTransferNotificationProc(userRoutine, hFT, pFSSpec) InvokeFileTransferNotificationUPP(hFT, pFSSpec, userRoutine)
  344. #define CallFileTransferChooseIdleProc(userRoutine)                InvokeFileTransferChooseIdleUPP(userRoutine)
  345. EXTERN_API( FTErr )
  346. InitFT                            (void);
  347.  
  348. EXTERN_API( Handle )
  349. FTGetVersion                    (FTHandle                 hFT);
  350.  
  351. EXTERN_API( short )
  352. FTGetFTVersion                    (void);
  353.  
  354. EXTERN_API( FTHandle )
  355. FTNew                            (short                     procID,
  356.                                  FTFlags                 flags,
  357.                                  FileTransferSendUPP     sendProc,
  358.                                  FileTransferReceiveUPP  recvProc,
  359.                                  FileTransferReadUPP     readProc,
  360.                                  FileTransferWriteUPP     writeProc,
  361.                                  FileTransferEnvironsUPP  environsProc,
  362.                                  WindowPtr                 owner,
  363.                                  long                     refCon,
  364.                                  long                     userData);
  365.  
  366. EXTERN_API( void )
  367. FTDispose                        (FTHandle                 hFT);
  368.  
  369. EXTERN_API( FTErr )
  370. FTStart                            (FTHandle                 hFT,
  371.                                  FTDirection             direction,
  372.                                  const SFReply *        fileInfo);
  373.  
  374. EXTERN_API( FTErr )
  375. FTAbort                            (FTHandle                 hFT);
  376.  
  377. EXTERN_API( FTErr )
  378. FTSend                            (FTHandle                 hFT,
  379.                                  short                     numFiles,
  380.                                  FSSpecArrayPtr         pFSSpec,
  381.                                  FileTransferNotificationUPP  notifyProc);
  382.  
  383. EXTERN_API( FTErr )
  384. FTReceive                        (FTHandle                 hFT,
  385.                                  FSSpecPtr                 pFSSpec,
  386.                                  FileTransferNotificationUPP  notifyProc);
  387.  
  388. EXTERN_API( void )
  389. FTExec                            (FTHandle                 hFT);
  390.  
  391. EXTERN_API( void )
  392. FTActivate                        (FTHandle                 hFT,
  393.                                  Boolean                 activate);
  394.  
  395. EXTERN_API( void )
  396. FTResume                        (FTHandle                 hFT,
  397.                                  Boolean                 resume);
  398.  
  399. EXTERN_API( Boolean )
  400. FTMenu                            (FTHandle                 hFT,
  401.                                  short                     menuID,
  402.                                  short                     item);
  403.  
  404. EXTERN_API( short )
  405. FTChoose                        (FTHandle *                hFT,
  406.                                  Point                     where,
  407.                                  FileTransferChooseIdleUPP  idleProc);
  408.  
  409. EXTERN_API( void )
  410. FTEvent                            (FTHandle                 hFT,
  411.                                  const EventRecord *    theEvent);
  412.  
  413. EXTERN_API( Boolean )
  414. FTValidate                        (FTHandle                 hFT);
  415.  
  416. EXTERN_API( void )
  417. FTDefault                        (Ptr *                    theConfig,
  418.                                  short                     procID,
  419.                                  Boolean                 allocate);
  420.  
  421. EXTERN_API( Handle )
  422. FTSetupPreflight                (short                     procID,
  423.                                  long *                    magicCookie);
  424.  
  425. EXTERN_API( void )
  426. FTSetupSetup                    (short                     procID,
  427.                                  const void *            theConfig,
  428.                                  short                     count,
  429.                                  DialogPtr                 theDialog,
  430.                                  long *                    magicCookie);
  431.  
  432. EXTERN_API( Boolean )
  433. FTSetupFilter                    (short                     procID,
  434.                                  const void *            theConfig,
  435.                                  short                     count,
  436.                                  DialogPtr                 theDialog,
  437.                                  EventRecord *            theEvent,
  438.                                  short *                theItem,
  439.                                  long *                    magicCookie);
  440.  
  441. EXTERN_API( void )
  442. FTSetupItem                        (short                     procID,
  443.                                  const void *            theConfig,
  444.                                  short                     count,
  445.                                  DialogPtr                 theDialog,
  446.                                  short *                theItem,
  447.                                  long *                    magicCookie);
  448.  
  449. EXTERN_API( void )
  450. FTSetupXCleanup                    (short                     procID,
  451.                                  const void *            theConfig,
  452.                                  short                     count,
  453.                                  DialogPtr                 theDialog,
  454.                                  Boolean                 OKed,
  455.                                  long *                    magicCookie);
  456.  
  457. EXTERN_API( void )
  458. FTSetupPostflight                (short                     procID);
  459.  
  460. EXTERN_API( Ptr )
  461. FTGetConfig                        (FTHandle                 hFT);
  462.  
  463. EXTERN_API( short )
  464. FTSetConfig                        (FTHandle                 hFT,
  465.                                  const void *            thePtr);
  466.  
  467. EXTERN_API( FTErr )
  468. FTIntlToEnglish                    (FTHandle                 hFT,
  469.                                  const void *            inputPtr,
  470.                                  Ptr *                    outputPtr,
  471.                                  short                     language);
  472.  
  473. EXTERN_API( FTErr )
  474. FTEnglishToIntl                    (FTHandle                 hFT,
  475.                                  const void *            inputPtr,
  476.                                  Ptr *                    outputPtr,
  477.                                  short                     language);
  478.  
  479. EXTERN_API( void )
  480. FTGetToolName                    (short                     procID,
  481.                                  Str255                 name);
  482.  
  483. EXTERN_API( short )
  484. FTGetProcID                        (ConstStr255Param         name);
  485.  
  486. EXTERN_API( void )
  487. FTSetRefCon                        (FTHandle                 hFT,
  488.                                  long                     refCon);
  489.  
  490. EXTERN_API( long )
  491. FTGetRefCon                        (FTHandle                 hFT);
  492.  
  493. EXTERN_API( void )
  494. FTSetUserData                    (FTHandle                 hFT,
  495.                                  long                     userData);
  496.  
  497. EXTERN_API( long )
  498. FTGetUserData                    (FTHandle                 hFT);
  499.  
  500. EXTERN_API( void )
  501. FTGetErrorString                (FTHandle                 hFT,
  502.                                  short                     id,
  503.                                  Str255                 errMsg);
  504.  
  505. /*
  506.     These Async routines were added to InterfaceLib in System 7.5
  507. */
  508. EXTERN_API( FTErr )
  509. FTSendAsync                        (FTHandle                 hFT,
  510.                                  short                     numFiles,
  511.                                  FSSpecArrayPtr         pFSSpec,
  512.                                  FileTransferNotificationUPP  notifyProc);
  513.  
  514. EXTERN_API( FTErr )
  515. FTReceiveAsync                    (FTHandle                 hFT,
  516.                                  FSSpecPtr                 pFSSpec,
  517.                                  FileTransferNotificationUPP  notifyProc);
  518.  
  519. EXTERN_API( FTErr )
  520. FTCompletionAsync                (FTHandle                 hFT,
  521.                                  FTCompletionKind         completionCall);
  522.  
  523. #endif  /* CALL_NOT_IN_CARBON */
  524.  
  525.  
  526. #if PRAGMA_STRUCT_ALIGN
  527.     #pragma options align=reset
  528. #elif PRAGMA_STRUCT_PACKPUSH
  529.     #pragma pack(pop)
  530. #elif PRAGMA_STRUCT_PACK
  531.     #pragma pack()
  532. #endif
  533.  
  534. #ifdef PRAGMA_IMPORT_OFF
  535. #pragma import off
  536. #elif PRAGMA_IMPORT
  537. #pragma import reset
  538. #endif
  539.  
  540. #ifdef __cplusplus
  541. }
  542. #endif
  543.  
  544. #endif /* __FILETRANSFERS__ */
  545.  
  546.